MySQL het ALTER statement
ALTER TABLE
Om een kolom uit een tabel te schrappen gebruiken we het ALTER statement in combinatie met het DROP statement:
-- JI -- 13 november 2012 -- leren hoe je een tabel object wijzigt -- Bestandsnaam: BoekenAlterCommentaarDrop.sql use JefInghelbrecht; alter table Boeken drop column Commentaar;
Om een kolom toe te voegen maak je gebruik van het ADD en het ALTER statement. Je zou hier de instructie create column verwachten. In SQL gebruik je namelijk het keyword create om een object in de database aan te maken, gevolgd door de clausule column. Dus om een kolom toevoegen gebruik je niet create column maar een eenvoudige add:
-- JI -- 13 november 2012 -- voeg de kolom commentaar toe, 150 karakters -- Bestandsnaam: BoekenAlterCommentaarAdd.sql use JefInghelbrecht; alter table Boeken add Commentaar nvarchar(150);
Om de eigenschappen te veranderen van een kolom is de syntax in SQL Server en MySQL verschillend.
Het is goed om van meet af aan de integriteit van de database te denken.
We gaan ervan uit dat de familienaam moet ingevuld worden. Zelfs al is de auteur onbekend, moet dan zoiets als onbekend worden ingevuld. Een een kolom verplicht te maken voegen we een constraint toe:
In SQL Server:
-- JI -- 13 november 2012 -- voeg een not null contraint toe op de kolom Familienaam -- Bestandsnaam: -- BoekenAlterFamilienaamAlterNotNull.sql use JefInghelbrecht; alter table Boeken alter column Familienaam nvarchar(200) not null;
Om kolomnamen te wijzigen kan je in MySQL het ALTER statement gebruiken in combinatie met de CHANGE clausule. De generieke vorm is:
ALTER TABLE tablename CHANGE oldname newname varchar(10) ;
In ons voorbeeld wordt dat:
ALTER TABLE Personen CHANGE Email E-mail varchar(255) ;
Het zou te gemakkellijk geweest zijn als het wijzigigen van objecten in MySQL met het ALTER statement zou kunnen worden uitgevoerd. Maar om de naam van een tabel te wijzigen kunnen we niet het ALTER statement niet gebruiken. Er bestaat daarvoor een RENAME statement. De generieke vorm is. Let op het gebruik van backticks rond de naam van de tabellen. Die zijn verplicht wanneer de naam van de tabel overeenkomt met een gereserveerd woord van MySQL:
RENAME TABLE `oldTableName` TO `newTableName`;
In ons voorbeeld:
RENAME TABLE `Boeken` TO `MijnBoeken`